
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_CN">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>并发执行 &#8212; Python 3.7.3 文档</title>
    <link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    
    <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <script type="text/javascript" src="../_static/language_data.js"></script>
    <script type="text/javascript" src="../_static/translations.js"></script>
    
    <script type="text/javascript" src="../_static/sidebar.js"></script>
    
    <link rel="search" type="application/opensearchdescription+xml"
          title="在 Python 3.7.3 文档 中搜索"
          href="../_static/opensearch.xml"/>
    <link rel="author" title="关于这些文档" href="../about.html" />
    <link rel="index" title="索引" href="../genindex.html" />
    <link rel="search" title="搜索" href="../search.html" />
    <link rel="copyright" title="版权所有" href="../copyright.html" />
    <link rel="next" title="threading --- 基于线程的并发" href="threading.html" />
    <link rel="prev" title="ctypes --- Python 的外部函数库" href="ctypes.html" />
    <link rel="shortcut icon" type="image/png" href="../_static/py.png" />
    <link rel="canonical" href="https://docs.python.org/3/library/concurrency.html" />
    
    <script type="text/javascript" src="../_static/copybutton.js"></script>
    <script type="text/javascript" src="../_static/switchers.js"></script>
    
    
    
    <style>
      @media only screen {
        table.full-width-table {
            width: 100%;
        }
      }
    </style>
 

  </head><body>  
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>导航</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="总目录"
             accesskey="I">索引</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python 模块索引"
             >模块</a> |</li>
        <li class="right" >
          <a href="threading.html" title="threading --- 基于线程的并发"
             accesskey="N">下一页</a> |</li>
        <li class="right" >
          <a href="ctypes.html" title="ctypes --- Python 的外部函数库"
             accesskey="P">上一页</a> |</li>
        <li><img src="../_static/py.png" alt=""
                 style="vertical-align: middle; margin-top: -1px"/></li>
        <li><a href="https://www.python.org/">Python</a> &#187;</li>
        <li>
          <span class="language_switcher_placeholder">zh_CN</span>
          <span class="version_switcher_placeholder">3.7.3</span>
          <a href="../index.html">文档</a> &#187;
        </li>

          <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Python 标准库</a> &#187;</li>
    <li class="right">
        

    <div class="inline-search" style="display: none" role="search">
        <form class="inline-search" action="../search.html" method="get">
          <input placeholder="快速搜索" type="text" name="q" />
          <input type="submit" value="转向" />
          <input type="hidden" name="check_keywords" value="yes" />
          <input type="hidden" name="area" value="default" />
        </form>
    </div>
    <script type="text/javascript">$('.inline-search').show(0);</script>
         |
    </li>

      </ul>
    </div>    

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <div class="section" id="concurrent-execution">
<span id="concurrency"></span><h1>并发执行<a class="headerlink" href="#concurrent-execution" title="永久链接至标题">¶</a></h1>
<p>本章中描述的模块支持并发执行代码。 适当的工具选择取决于要执行的任务（CPU密集型或IO密集型）和偏好的开发风格（事件驱动的协作式多任务或抢占式多任务处理）。 这是一个概述：</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="threading.html"><code class="docutils literal notranslate"><span class="pre">threading</span></code> --- 基于线程的并发</a><ul>
<li class="toctree-l2"><a class="reference internal" href="threading.html#thread-local-data">线程本地数据</a></li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#thread-objects">线程对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#lock-objects">锁对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#rlock-objects">递归锁对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#condition-objects">条件对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#semaphore-objects">信号量对象</a><ul>
<li class="toctree-l3"><a class="reference internal" href="threading.html#semaphore-example"><code class="docutils literal notranslate"><span class="pre">Semaphore</span></code> 例子</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#event-objects">事件对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#timer-objects">定时器对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#barrier-objects">栅栏对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="threading.html#using-locks-conditions-and-semaphores-in-the-with-statement">在 <code class="xref std std-keyword docutils literal notranslate"><span class="pre">with</span></code> 语句中使用锁、条件和信号量</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="multiprocessing.html"><code class="docutils literal notranslate"><span class="pre">multiprocessing</span></code> --- Process-based parallelism</a><ul>
<li class="toctree-l2"><a class="reference internal" href="multiprocessing.html#introduction">概述</a><ul>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#the-process-class">The <code class="docutils literal notranslate"><span class="pre">Process</span></code> class</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#contexts-and-start-methods">Contexts and start methods</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#exchanging-objects-between-processes">Exchanging objects between processes</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#synchronization-between-processes">Synchronization between processes</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#sharing-state-between-processes">Sharing state between processes</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#using-a-pool-of-workers">Using a pool of workers</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="multiprocessing.html#reference">参考引用</a><ul>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#process-and-exceptions"><code class="docutils literal notranslate"><span class="pre">Process</span></code> and exceptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#pipes-and-queues">Pipes and Queues</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#miscellaneous">Miscellaneous</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#connection-objects">Connection Objects</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#synchronization-primitives">Synchronization primitives</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#shared-ctypes-objects">Shared <code class="docutils literal notranslate"><span class="pre">ctypes</span></code> Objects</a><ul>
<li class="toctree-l4"><a class="reference internal" href="multiprocessing.html#module-multiprocessing.sharedctypes">The <code class="docutils literal notranslate"><span class="pre">multiprocessing.sharedctypes</span></code> module</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#managers">Managers</a><ul>
<li class="toctree-l4"><a class="reference internal" href="multiprocessing.html#customized-managers">Customized managers</a></li>
<li class="toctree-l4"><a class="reference internal" href="multiprocessing.html#using-a-remote-manager">Using a remote manager</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#proxy-objects">Proxy Objects</a><ul>
<li class="toctree-l4"><a class="reference internal" href="multiprocessing.html#cleanup">Cleanup</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#module-multiprocessing.pool">Process Pools</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#module-multiprocessing.connection">Listeners and Clients</a><ul>
<li class="toctree-l4"><a class="reference internal" href="multiprocessing.html#address-formats">Address Formats</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#authentication-keys">Authentication keys</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#logging">日志</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#module-multiprocessing.dummy">The <code class="docutils literal notranslate"><span class="pre">multiprocessing.dummy</span></code> module</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="multiprocessing.html#programming-guidelines">Programming guidelines</a><ul>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#all-start-methods">All start methods</a></li>
<li class="toctree-l3"><a class="reference internal" href="multiprocessing.html#the-spawn-and-forkserver-start-methods">The <em>spawn</em> and <em>forkserver</em> start methods</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="multiprocessing.html#examples">示例</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="concurrent.html"><code class="docutils literal notranslate"><span class="pre">concurrent</span></code> 包</a></li>
<li class="toctree-l1"><a class="reference internal" href="concurrent.futures.html"><code class="docutils literal notranslate"><span class="pre">concurrent.futures</span></code> --- 启动并行任务</a><ul>
<li class="toctree-l2"><a class="reference internal" href="concurrent.futures.html#executor-objects">执行器对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="concurrent.futures.html#threadpoolexecutor">ThreadPoolExecutor</a><ul>
<li class="toctree-l3"><a class="reference internal" href="concurrent.futures.html#threadpoolexecutor-example">ProcessPoolExecutor例子</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="concurrent.futures.html#processpoolexecutor">ProcessPoolExecutor</a><ul>
<li class="toctree-l3"><a class="reference internal" href="concurrent.futures.html#processpoolexecutor-example">ProcessPoolExecutor Example</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="concurrent.futures.html#future-objects">Future对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="concurrent.futures.html#module-functions">模块函数</a></li>
<li class="toctree-l2"><a class="reference internal" href="concurrent.futures.html#exception-classes">Exception类</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="subprocess.html"><code class="docutils literal notranslate"><span class="pre">subprocess</span></code> --- 子进程管理</a><ul>
<li class="toctree-l2"><a class="reference internal" href="subprocess.html#using-the-subprocess-module">使用 <code class="docutils literal notranslate"><span class="pre">subprocess</span></code> 模块</a><ul>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#frequently-used-arguments">常用参数</a></li>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#popen-constructor">Popen 构造函数</a></li>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#exceptions">异常</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="subprocess.html#security-considerations">安全考量</a></li>
<li class="toctree-l2"><a class="reference internal" href="subprocess.html#popen-objects">Popen 对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="subprocess.html#windows-popen-helpers">Windows Popen 助手</a><ul>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#windows-constants">Windows Constants</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="subprocess.html#older-high-level-api">Older high-level API</a></li>
<li class="toctree-l2"><a class="reference internal" href="subprocess.html#replacing-older-functions-with-the-subprocess-module">Replacing Older Functions with the <code class="docutils literal notranslate"><span class="pre">subprocess</span></code> Module</a><ul>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#replacing-bin-sh-shell-backquote">Replacing /bin/sh shell backquote</a></li>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#replacing-shell-pipeline">Replacing shell pipeline</a></li>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#replacing-os-system">Replacing <code class="docutils literal notranslate"><span class="pre">os.system()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#replacing-the-os-spawn-family">Replacing the <code class="docutils literal notranslate"><span class="pre">os.spawn</span></code> family</a></li>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#replacing-os-popen-os-popen2-os-popen3">Replacing <code class="docutils literal notranslate"><span class="pre">os.popen()</span></code>, <code class="docutils literal notranslate"><span class="pre">os.popen2()</span></code>, <code class="docutils literal notranslate"><span class="pre">os.popen3()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#replacing-functions-from-the-popen2-module">Replacing functions from the <code class="docutils literal notranslate"><span class="pre">popen2</span></code> module</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="subprocess.html#legacy-shell-invocation-functions">Legacy Shell Invocation Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="subprocess.html#notes">注释</a><ul>
<li class="toctree-l3"><a class="reference internal" href="subprocess.html#converting-an-argument-sequence-to-a-string-on-windows">Converting an argument sequence to a string on Windows</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="sched.html"><code class="docutils literal notranslate"><span class="pre">sched</span></code> --- 事件调度器</a><ul>
<li class="toctree-l2"><a class="reference internal" href="sched.html#scheduler-objects">调度器对象</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="queue.html">模块:<cite>queue</cite> --- 一个同步的队列类</a><ul>
<li class="toctree-l2"><a class="reference internal" href="queue.html#queue-objects">Queue对象</a></li>
<li class="toctree-l2"><a class="reference internal" href="queue.html#simplequeue-objects">SimpleQueue 对象</a></li>
</ul>
</li>
</ul>
</div>
<p>以下是上述某些服务的支持模块：</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="_thread.html"><code class="docutils literal notranslate"><span class="pre">_thread</span></code> --- 底层多线程 API</a></li>
<li class="toctree-l1"><a class="reference internal" href="_dummy_thread.html"><code class="docutils literal notranslate"><span class="pre">_dummy_thread</span></code> --- <code class="docutils literal notranslate"><span class="pre">_thread</span></code> 的替代模块</a></li>
<li class="toctree-l1"><a class="reference internal" href="dummy_threading.html"><code class="docutils literal notranslate"><span class="pre">dummy_threading</span></code> ---  可直接替代 <code class="docutils literal notranslate"><span class="pre">threading</span></code> 模块。</a></li>
</ul>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h4>上一个主题</h4>
  <p class="topless"><a href="ctypes.html"
                        title="上一章"><code class="docutils literal notranslate"><span class="pre">ctypes</span></code> --- Python 的外部函数库</a></p>
  <h4>下一个主题</h4>
  <p class="topless"><a href="threading.html"
                        title="下一章"><code class="docutils literal notranslate"><span class="pre">threading</span></code> --- 基于线程的并发</a></p>
  <div role="note" aria-label="source link">
    <h3>本页</h3>
    <ul class="this-page-menu">
      <li><a href="../bugs.html">提交 Bug</a></li>
      <li>
        <a href="https://github.com/python/cpython/blob/3.7/Doc/library/concurrency.rst"
            rel="nofollow">显示源代码
        </a>
      </li>
    </ul>
  </div>
        </div>
      </div>
      <div class="clearer"></div>
    </div>  
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>导航</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="总目录"
             >索引</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python 模块索引"
             >模块</a> |</li>
        <li class="right" >
          <a href="threading.html" title="threading --- 基于线程的并发"
             >下一页</a> |</li>
        <li class="right" >
          <a href="ctypes.html" title="ctypes --- Python 的外部函数库"
             >上一页</a> |</li>
        <li><img src="../_static/py.png" alt=""
                 style="vertical-align: middle; margin-top: -1px"/></li>
        <li><a href="https://www.python.org/">Python</a> &#187;</li>
        <li>
          <span class="language_switcher_placeholder">zh_CN</span>
          <span class="version_switcher_placeholder">3.7.3</span>
          <a href="../index.html">文档</a> &#187;
        </li>

          <li class="nav-item nav-item-1"><a href="index.html" >Python 标准库</a> &#187;</li>
    <li class="right">
        

    <div class="inline-search" style="display: none" role="search">
        <form class="inline-search" action="../search.html" method="get">
          <input placeholder="快速搜索" type="text" name="q" />
          <input type="submit" value="转向" />
          <input type="hidden" name="check_keywords" value="yes" />
          <input type="hidden" name="area" value="default" />
        </form>
    </div>
    <script type="text/javascript">$('.inline-search').show(0);</script>
         |
    </li>

      </ul>
    </div>  
    <div class="footer">
    &copy; <a href="../copyright.html">版权所有</a> 2001-2019, Python Software Foundation.
    <br />
    Python 软件基金会是一个非盈利组织。
    <a href="https://www.python.org/psf/donations/">请捐助。</a>
    <br />
    最后更新于 4月 09, 2019.
    <a href="../bugs.html">发现了问题</a>？
    <br />
    使用<a href="http://sphinx.pocoo.org/">Sphinx</a>1.8.4 创建。
    </div>

  </body>
</html>